package com.xyazm.order.remote;

import com.xyazm.common.core.JsonResult;
import com.xyazm.common.utils.CheckResultUtil;
import com.xyazm.coupon.api.IUserCouponApi;
import com.xyazm.coupon.domain.dto.UserCouponDTO;
import com.xyazm.coupon.domain.param.QueryUserCouponParam;
import com.xyazm.coupon.domain.param.ReleaseUserCouponParam;
import com.xyazm.coupon.domain.param.UseUserCouponParam;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component;

/**
 * 优惠券服务远程调用接口
 * @author xuyou
 * @date 2022年08月28日 21:28
 */
@Component
public class CouponRemote {

    /**
     * 优惠券服务
     */
    @DubboReference(version = "1.0.0")
    private IUserCouponApi userCouponApi;

    public UserCouponDTO getUserCoupon(QueryUserCouponParam queryUserCouponParam) {
        // 调用优惠券服务api,查询用户优惠券详情
        JsonResult<UserCouponDTO> result = userCouponApi.getUserCoupon(queryUserCouponParam);
        // 检查api调用结果
        CheckResultUtil.checkResult(result,"查询用户优惠券详情");
        return result.getData();
    }


    public void useUserCoupon(UseUserCouponParam useUserCouponParam) {
        // 调用优惠券服务api,核销用户优惠券
        JsonResult<Void> result = userCouponApi.useUserCoupon(useUserCouponParam);
        // 检查api调用结果
        CheckResultUtil.checkResult(result,"核销用户优惠券");
    }


    public void releaseUserCoupon(ReleaseUserCouponParam releaseUserCouponParam) {
        // 调用优惠券服务api,释放用户优惠券
        JsonResult<Void> result = userCouponApi.releaseUserCoupon(releaseUserCouponParam);
        // 检查api调用结果
        CheckResultUtil.checkResult(result,"释放用户优惠券");
    }



}
